package com.jack.lib.core.utils;


import com.blankj.utilcode.util.LogUtils;
import com.elvishew.xlog.XLog;

/**
 * 作者: jack(黄冲)
 * 邮箱: 907755845@qq.com
 * create on 2018/11/20 10:19
 */

public class JLog {

    private static final String TAG = "jlog";

    private static String createMessage(String msg) {
        String functionName = getFunctionName();
        return  (functionName == null ? msg : (functionName + "\n" + msg));
    }


    private static String getFunctionName() {
        StackTraceElement[] sts = Thread.currentThread().getStackTrace();

        for (StackTraceElement st : sts) {
            if (st.isNativeMethod()) {
                continue;
            }

            if (st.getClassName().equals(Thread.class.getName())) {
                continue;
            }

            if (st.getClassName().equals(JLog.class.getName())) {
                continue;
            }

            return TimeUtils.getDate(TimeUtils.DATE_FORMAT_2, System.currentTimeMillis()) + "  "+st.getFileName() + "." + st.getMethodName() + ":" + st.getLineNumber();
        }

        return null;
    }


    private static String getString(Object... message){
        StringBuilder buffer = new StringBuilder();
        for (Object o : message) {
            buffer.append(o);
            buffer.append("    ");
        }
        return buffer.toString().trim();
    }

    public static void v(String tag, Object... message) {
        XLog.v(getString(tag, getString(message)));
        LogUtils.file(TAG + "-" + tag, getString(message));
    }


    public static void i(String tag, String message) {
        if (tag.contains("http")) {
            XLog.i(getString(tag, getString(message)));
            LogUtils.file(TAG + "-" + tag, getString(message));
        }else  {
            XLog.i(getString(tag, getString(message)));
            LogUtils.file(tag, message);
        }
    }

    public static void i(String tag, Object... message) {
        XLog.i(getString(tag, getString(message)));
        LogUtils.file(tag, getString(message));
    }


    public static void w(String tag, Object... message) {
        XLog.w(getString(tag, getString(message)));
        LogUtils.file(tag, getString(message));
    }


    public static void e(String tag, Object... message) {
        XLog.e(getString(tag, getString(message)));
        LogUtils.file(tag, getString(message));
    }

    public static void e(String message) {
        XLog.e(getString(message));
        LogUtils.file(getString(message));
    }

    public static void d(Object... message) {
        XLog.d(getString(message));
        LogUtils.file(getString(message));
    }

    public static void d(String tag, Object... message) {
        XLog.d(getString(tag, getString(message)));
        LogUtils.file(TAG + "-" + tag, getString(message));
    }

    public static void json(String json) {
        XLog.json(json);
        LogUtils.file(json);
    }

    public static void json(String tag, String json) {
        XLog.d(json);
        XLog.d("┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄");
        LogUtils.file(TAG + "-" + tag, json);
        LogUtils.file(TAG + "-" + tag, "┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄");
    }
}
